//
//  UITextView+emotIcon.swift
//  emotIcon
//
//  Created by 半缘君 on 15/12/16.
//  Copyright © 2015年 banyuanjun.cn. All rights reserved.
//

import UIKit

extension UITextView {
    func insertEmoticon (em:Emoticon) {
// 空白按钮
        if em.isEmpty {
            print("空白")
            return
        }
//删除按钮
        if em.isRemoved {
            print("删除")
            return deleteBackward()
        }
        //unicode 表情
        if let emoji = em.emoji {
            print("编码")
            replaceRange(selectedTextRange!, withText: emoji)
            return

        }
        
        //图片显示
        insertImageEmoticon(em)
        
        // 5. 通知`代理`文本变化了 － textViewDidChange? 表示代理如果没有实现方法，就什么都不做，更安全
        delegate?.textViewDidChange?(self)
    }
    
    /// 根据模型Emoicon获取图片富文本
    ///
    /// - parameter em: 模型
    /// - returns: 图片富文本
   func insertImageEmoticon(em:Emoticon){
    
    //用模型创建并设置附件
    let imageText = LQTextAttachment(em: em).imageText(font!)

    //1获得当前富文本
    let strM = NSMutableAttributedString(attributedString: attributedText)
    
    // 1> 替换文本内容
    strM.replaceCharactersInRange(selectedRange, withAttributedString: imageText)
    
    // 2> 记录光标位置
    let range = selectedRange
    
    // 3> 重新替换 textView 的内容
    attributedText = strM
    
    selectedRange = NSRange(location: range.location + 1, length: 0)
    }
}